"""
    基础控制器，封装一些基础方法
    验证库https://cerberus.readthedocs.io/en/stable/index.html
"""
import logging

from flask import request, jsonify

from app.Vendor.Code import Code
from app.Vendor.Utils import Utils
from app.env import DEBUG_LOG

log = logging.getLogger('error_msg')


class BaseController:
    """
    * 返回Json数据
    * @param  dict body
    * @return json
    """

    @staticmethod
    def json(body={}):
        if DEBUG_LOG:
            debug_id = Utils.unique_id()
            data = {
                'LOG_ID': debug_id,
                'IP_ADDRESS': request.remote_addr,
                'REQUEST_URL': request.url,
                'REQUEST_METHOD': request.method,
                'PARAMETERS': request.args,
                'RESPONSES': body
            }

            log.debug(data)

            body['debug_id'] = debug_id
        return jsonify(body)

    '''
    * 返回错误信息
    * @param  msg string
    * @return json
    '''

    def error(self, msg='', show=True):
        return self.json({'code': Code.BAD_REQUEST, 'error': True, 'msg': msg, 'show': show})

    '''
    * 返回成功信息
    * @param  msg string
    * @return json
    '''

    def success(self, data='', msg='', show=True):
        return self.json({'code': Code.SUCCESS, 'data': data, 'msg': msg, 'show': show})
